package test;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import ui.viewModel.ModelErrorInfo;
import ui.viewModel.ViewModel;
import junit.framework.TestCase;

public class Registertest extends TestCase {

		// 声明了注册界面中用到的变量
		private String userName, passWord, checkedPassWord, mail;

		// 获取用户名称
		public String getUserName() {
			return userName;
		}

		// 设置用户姓名
		public void setUserName(String userName) {
			this.userName = userName;
		}

		// 获取用户密码
		public String getPassWord() {
			return passWord;
		}

		// 设置密码
		public void setPassWord(String passWord) {
			this.passWord = passWord;
		}

		// 获取确认密码
		public String getCheckedPassWord() {
			return checkedPassWord;
		}

		// 设置确认密码
		public void setCheckedPassWord(String checkedPassWord) {
			this.checkedPassWord = checkedPassWord;
		}

		// 获取用户注册邮箱
		public String getMail() {
			return mail;
		}

		// 设置用户注册邮箱
		public void setMail(String mail) {
			this.mail = mail;
		}

		// 获取后一天的运动数据，并显示出来
		public List<ModelErrorInfo> verifyModel() {
			// TODO Auto-generated method stub
			List<ModelErrorInfo> errs = null;
			
			//对注册的用户名称进行验证
			if (userName == null) {
				ModelErrorInfo err = new ModelErrorInfo();
				err.setErrAttName(userName);
				err.setErrMsg("用户名不能为空");
				if (errs == null) {
					errs = new ArrayList<ModelErrorInfo>();
				}
				errs.add(err);
			}
			if (userName.length() > 8) {
				ModelErrorInfo err = new ModelErrorInfo();
				err.setErrAttName(userName);
				err.setErrMsg("用户名长度不能大于8");
				if (errs == null) {
					errs = new ArrayList<ModelErrorInfo>();
				}
				errs.add(err);
			}
			if (userName.length() < 3) {
				ModelErrorInfo err = new ModelErrorInfo();
				err.setErrAttName(userName);
				err.setErrMsg("用户名长度不能小于3");
				if (errs == null) {
					errs = new ArrayList<ModelErrorInfo>();
				}
				errs.add(err);
			}
			
			//验证注册邮箱不能为空
			if(mail == null){
				ModelErrorInfo err = new ModelErrorInfo();
				err.setErrAttName(mail);
				err.setErrMsg("邮箱不能为空");
				if (errs == null) {
					errs = new ArrayList<ModelErrorInfo>();
				}
				errs.add(err);
			}
			
			//正则表达式验证邮箱合法性
			String regEmail = "([//w[_-][//.]]+@+[//w[_-]]+//.+[A-Za-z]{2,3})|([//"
	            + "w[_-][//.]]+@+[//w[_-]]+//.+[//w[_-]]+//.+[A-Za-z]{2,3})|"
	            + "([//w[_-][//.]]+@+[//w[_-]]+//.+[//w[_-]]+//.+[//w[_-]]+"
	            + "//.+[A-Za-z]{2,3})";
			
			//验证密码的合法性
			Pattern emailPattern = Pattern.compile(regEmail);
			Matcher emailMatcher = emailPattern.matcher(mail);
			if(!emailMatcher.matches()){
				ModelErrorInfo err = new ModelErrorInfo();
				err.setErrAttName(mail);
				err.setErrMsg("邮箱格式非法！");
				if (errs == null) {
					errs = new ArrayList<ModelErrorInfo>();
				}
				errs.add(err);
			}
			
			//验证密码长度不能小于3位，不能大于16位
			if(passWord.length() < 3){
				ModelErrorInfo err = new ModelErrorInfo();
				err.setErrAttName(passWord);
				err.setErrMsg("密码长度不能小于3");
				if (errs == null) {
					errs = new ArrayList<ModelErrorInfo>();
				}
				errs.add(err);
			}
			
			if(passWord.length() > 16){
				ModelErrorInfo err = new ModelErrorInfo();
				err.setErrAttName(passWord);
				err.setErrMsg("用户名长度不能大于16");
				if (errs == null) {
					errs = new ArrayList<ModelErrorInfo>();
				}
				errs.add(err);
			}
			
			//验证两次密码输入是否一致
			if (passWord != checkedPassWord) {
				ModelErrorInfo err = new ModelErrorInfo();
				err.setErrAttName(checkedPassWord);
				err.setErrMsg("两次输入的密码不同!");
				if (errs == null) {
					errs = new ArrayList<ModelErrorInfo>();
				}
				errs.add(err);
			}
			return errs;
		}
}
